import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class FileServer extends Thread {
	
	public static ServerSocket ss;
	
	public FileServer(int port)
	{
		try {
				ss = new ServerSocket(port);
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
	}
	
	public void run()
	{
		while (true)
		{
			try {
				Socket clientSock = ss.accept();
				saveFile(clientSock);
			} 
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}

	private void saveFile(Socket clientSock) throws IOException 
	{
		DataInputStream dis = new DataInputStream(clientSock.getInputStream());
		FileOutputStream fos = new FileOutputStream("d:/testfile.txt");
		byte[] buffer = new byte[4096];
		
		int filesize = 15123; // Send file size in separate msg
		int read = 0;
		int totalRead = 0;
		int remaining = filesize;
		while((read = dis.read(buffer, 0, Math.min(buffer.length, remaining))) > 0) {
			totalRead += read;
			remaining -= read;
			System.out.println("read " + totalRead + " bytes.");
			fos.write(buffer, 0, read);
		}
		System.out.println("Le serveur a reu un fichier.");
		fos.close();
		dis.close();
	
		
	}
	
	public static void main(String[] args)
	{
		System.out.println("Lancement du serveur...");
		FileServer fs = new FileServer(8081);
		fs.start();
		ss.close();
	}

}